// ============================== 导入依赖 ============================== //

import CORE from '@/CORE'
import ListClass from '@api/equipment/model/AssetListQueryReq'
import BaseClass from '@api/equipment/model/AssetDto'
import API from './API'

const STATUS = [
  [2, '在用', '', '绿'],
  [3, '领用', '', '蓝'],
  [4, '借用', '', '蓝'],
  [5, '故障', '', '红'],
  [6, '闲置', '', '金'],
  [7, '处置', '', '灰'],
]

const ADD_STATUS = STATUS.filter(([id]) => [2, 5, 6].includes(id))

// ============================== 导出状态集 ============================== //

export default {
  // —————————————————————————————— 常量状态 —————————————————————————————— //

  /**
   * 接口
   */
  API,

  /**
   * 映射
   */
  MAP: {
    WORD: CORE.MAP.ASSET, // 单词

    /**
     * 状态
     */
    STATUS: {
      2: 1, // 上线
      3: 3, // 维修
      4: 2, // 异常
      5: 4, // 报废
    },

    /**
     * 计数
     */
    COUNT: [],
  },

  /**
   * 字典
   */
  DICT: {
    /**
     * 状态
     */
    STATUS,

    /**
     * 新增状态
     */
    ADD_STATUS,

    /**
     * 处理
     */
    DEAL: [
      [5, '在用', '', '绿'],
      [6, '故障', '', '红'],
      [7, '停机', '', '金'],
      [8, '闲置', '', '蓝'],
      [9, '处置', '', '灰'],
    ],

    /**
     * 编号类型
     */
    CODE_TYPE: [
      [1, '自动生成'],
      [2, '手动输入'],
    ],

    /**
     * 折旧类型
     */
    OLD_TYPE: [
      [1, '平均年限法'],
      [2, '年数总和法'],
      [3, '双倍余额递减法'],
    ],
  },

  /**
   * 初始参数
   *
   * 1. 初始存在，才能响应
   * 2. CORE.mixStore(store) 时使用
   * 3. setParam() 重置时使用
   * 4. WebSearch 高级查询点重置时使用
   */
  INIT_PARAM: CORE.initObj(ListClass, BaseClass, {
    TIP: '',
    status: 0,
    statusList: STATUS.map(([id]) => id),
    tagIdList: [], // 标签 ID 列表
  }),

  /**
   * 初始单项
   *
   * 1. 初始存在，才能响应
   * 2. setOne() 合并时使用
   * 3. openAdd() 新增时使用
   */
  INIT_ONE: CORE.initObj(BaseClass, {
    codeType: 1, // 编号类型
    auto: '自动生成',
    status: 2,
    TIP: '',
    assetId: [],
    operateType: 0,
    userName: '',
    description: '',
    depreciationEnable: 2, // 开启折旧 (默认否)
    tagIdList: [], // 标签 ID 列表
  }),

  // —————————————————————————————— 上传状态 —————————————————————————————— //

  /**
   * 初始配置
   */
  INIT_CONFIG: {
    /**
     * 上传有无进度条
     */
    UP_PRROGRESS: true,
  },

  /**
   * 上传进度
   */
  upProgress: {
    file: null, // 已选择的文件对象
  },
}
